在计算机科学的所有分支或者边缘学科中,蒙特卡罗模拟1(Monte Carlo Simulation)也许是最让人费解的。人们通常认为它与计算机科学关系甚远,只是计算机的一个应用,并不是对计算机发展有贡献的一项研究。然而,蒙特卡罗模拟其实与计算历史渊源深厚,很多早期程序和第一台大型全电子计算机器ENIAC中许多复杂的程序,实际上都是用蒙特卡罗方法来模拟各种物理过程。历史学家汤姆·黑格(Tom Haigh)、迈克·帕里斯特莱(Mark Priestly)和克里斯坦·罗普(Christian Rope)描述说,“在ENIAC上初露锋芒后,蒙特卡罗方法在科学计算和运筹学中显示出巨大的重要性。”
如果不拘泥于模拟是计算领域早期应用这个事实,我们就能认同模拟实际上是计算机科学的一种模型这个说法。这种模型倾向于采用称之为“黑盒(black-boxing)”的操作,隐藏和抽象了细节。就其本质而言,模拟涵盖了黑盒概念,因为它的目标是呈现自然现象的简洁、真实的写照。计算机科学也具有同样的目标,虽然这在计算时代的早期表现得并不明显。
了解蒙特卡洛模拟方法以及它为何吸引了早期的计算机科学家,将有助于我们讨论模拟和计算机科学的相互影响。蒙特卡洛模拟概念的出现早于计算时代约两个世纪,是以概率论(probably theory)和运气游戏(games of chance)为基础的。18世纪,法国数学家乔治·路易斯·雷克勒(George Louis Leclerc)(布丰伯爵,Comte de Buffon)注意到,有种运气游戏可以为圆周率π提供一种优良的估算方法。这种游戏需要一张绘有许多等间距平行线的纸,例如间距为5厘米,还需要一根长度和平行线间距相等的针,在这个例子中针长同样取5厘米。
这种运气游戏要求把纸放置在桌面上,将针投出使其落在纸上,这时,针将可能与其中的某条平行线相交,或者完全落在两条平行线之间。这个游戏可以重复多次。每一次,玩家都要记录针落下后的情况。最后一次投掷结束后,玩家将总的游戏次数除以针与平行线相交的次数,这个比值就是圆周率π的一个近似值。游戏进行的次数越多,这个近似值就会越精确。
模拟的背景
在19世纪,这个被称作“布丰投针(Buffon’s Needle)”的问题成为了数学定理中“大数定律(Law of Large Numbers)”的一个范例。该定律指出,某一类数学表达式或者积分的值可以通过随机过程进行估算,而且这些随机过程重复的次数越多,将会收敛并且越来越接近表达式的真实值。这种通过随机过程来估算数学量的方法,被称为蒙特卡罗积分法(Monte Carlo Integration)或蒙特卡罗模拟,该方法以摩纳哥公国(the principality of Monaco)赌场的名字命名。
在20世纪40年代中期计算机发明之前,蒙特卡罗模拟充其量只是一朵好看但不中用的鲜花。大多数情况下,通过构建合适的随机过程并重复多次来估算积分是不切实际的。然而,电子计算机改变了开展模拟所要花费的代价,因为它可以轻易地做重复计算。但是,电子计算机被设计为一台确定性的机器,每当运行相同的程序时都只做同样的事情。它是否可以创建和管理随机过程仍不明确。
与此同时,物理学、通信和制造管理领域出现了一系列重要的、用传统数学工具无法分析的难题。制造管理难题可以追溯到19世纪末,大约从工业时代开始。它研究产品如何在工厂或者销售网络中流转的问题,识别在这个过程中可能会降低生产率的关键环节。通信难题可以追溯到20世纪10年代和20年代,是处理电话网络中的类似问题。它研究信息如何在电信网中传输以及可能导致延迟的环节。
物理学虽然提出了几个不同的问题,但是它们有共同点,都和核武器开发有关。其中,最初的一个问题涉及观测中子是如何穿过不同的材料,以及是如何与其他粒子相互作用。所有这些来自制造、通信和物理学的问题原本可以从数学上进行分析,但是所有这些分析都过于复杂,无法得到简单的数值解。
计算机科学家于1946年初开始研究物理学问题。实际上,ENIAC以及许多其他的早期机器都投入了大量时间来解决此类问题。大约在十年后,制造和通信问题变得突出起来。最早的模拟之一就是构建密歇根州底特律市街区汽车交通流量模型[2]。模拟领域不断蓬勃发展。位于加州大学洛杉矶分校的数值分析研究所(The Institute for Numerical Analysis)在1951年第一次举办了有关模拟方法的会议。1955年左右,模拟相关的论文被发表在美国信息处理学会联合会(AFIPS)的会议上。这一会议的主题是“计算,大计算时代”。1961年,研究者开发了用于模拟的专门软件。1965年,他们组织了独立的模拟发展会议,这也是计算分支领域最早的会议之一。
黑盒
在计算机工程领域,被称为黑盒的过程通常是与1972年戴维·帕纳斯(David Parnas)发表的题为“关于系统划分为模块的标准(On the Criteria to Be Used in Decomposing Systems into Modules) [3]”的论文有关。这篇论文主要介绍了信息隐藏和软件模块的概念。这项工作是软件工程的基础之一,支撑了为数众多的软件开发。然而,在计算机科学领域,乃至大多数科学技术领域,都曾经历过另外一种更微妙的黑盒过程,即解决了本领域的基础性问题后,就终止了对这些问题的争论,并基于此开展更多研究。这是哲学家布鲁诺·拉图尔(Bruno LaTour)说的从“创造科学的过程”转变到“对科学的使用”[4]。一旦某个领域经历了这种转变,它就会停止对某个问题的争论,开始在这个已经被科学界接纳了的问题基础之上开展工作。
拉图尔(LaTour)援引了DNA双螺旋结构被接纳的过程作为这种黑盒过程的一个范例。当詹姆斯·沃森(James Watson)和弗朗西斯·克里克(Francis Crick)宣称他们确定DNA是双螺旋结构时,分子生物学家们并没有立即接纳他们的观点。实际上,科学家们对DNA结构的争论至少又持续了4年,才最终接纳沃森和克里克的结论。自此以后,所有从事DNA研究的学者都基于双螺旋结构开展DNA的研究了[5]。
计算机科学领域并不总是能够接纳那些解决基础性问题的想法,需要不断地向前发展,才能慢慢接纳它们。高级语言的引入就是一个很好的例子。1958年随着Fortran的推出开始出现高级语言。然而,许多计算机科学家一直抵制它们到20世纪80年代。这一群体的成员认为高级语言过于低效并且隐藏了过多的底层结构。
相比之下,蒙特卡罗模拟社区接纳解决基础性问题的想法,以及基于此开展研究的速度要相对快些。毕竟模拟社区的大部分成员都在尝试建模,知道建模需要省略、简化或者隐藏细节。历史学家彼得·加里森(Peter Gallison)指出,这个领域是一个“贸易区(trading zone)”,是一个没有统一协定、采用松散联系的社区来推进自身发展的学科。因此,该领域一贯愿意接纳那些能够帮助他们达成目标的新想法[6]。
蒙特卡罗模拟的黑盒
在过去的25年中,模拟在其领域的四个主要方面都有重大进展:伪随机数生成的可接受性[7]、优先队列的事件驱动标准算法[8]、表示模拟对象的面向对象编程方法[9]以及分布式模拟协议[10]。
在伪随机数生成可接受方面,如上的黑盒过程表现得最为明显。关于确定性计算机是否可以生成随机数的争论在该领域的第一个十年一直持续着。许多研究人员认为,确定性的计算机产生的随机数字流,不可能与物理过程产生的具有同样特性。事实上,被公认为发明了第一个实用随机数生成器的德里克·莱默(Derrick Lehmer)指出:“伪随机序列是一个含糊的概念,只是说明了这个序列中的每一项对于不知情者来说是不可预测的。” [11]为了能给计算机生成的随机数找到一个替代品,兰德(RAND)公司编制了一本书,记录了100万个赌轮生成的随机数[12]。
然而过了大约十年,研究人员开始意识到,蒙特卡罗领域并不严格要求数字是真正随机的。如果数字遵循特定的统计分布,没有自相关和前后序相关,该定理都将是有效的。当这个研究领域认可了这一点后,就终止了对随机数生成的争论,把它接纳为模拟领域的一种事实,随机数生成器就此成为模拟工具之一。
当然,随机数生成器工具也是不断发展的。自20世纪60年代初以来,研究者曾三次修正随机数生成器算法中存在的问题。然而,无论在什么情况下,没有任何人提议放弃随机数生成器。
当这个领域接纳随机数生成器作为一个关键工具时,在方法论上就有了巧妙的变化。从业人员可以花费更少的时间去证明他们模拟背后所用的概率模型,而能够花费更多的时间用于验证模拟的输出。他们认为模型正确,并不是因为底层的数学是正确的,而是因为模拟程序可以复制出真实现象中收集到的数据。
结论
多年来,在历史悠久的IEEE冬季模拟会议(IEEE’s Winter Simulation Conference)上,人们总是不露声色地讥讽那些曾经倾向于解散该会议的其他计算机科学分支。会议的奖品也蕴含了这些讥讽,奖品会颁发给为这个会议做出最伟大贡献的学者。奖品是一个雪花玻璃球,里面有一个微缩冬季场景和雪花状塑料薄片。当有人摇动这个球体时,塑料薄片就会像雪花一样纷飞起来。球体上的铭牌写道:“我们不是要模拟冬季,我们是要做模拟研究。”
归根结底,模拟已对计算机科学产生了深刻的影响。模拟促使计算机游戏背后的大量技术得以构建,已成为高速计算和计算机图形学中的一项基本应用。它促使许多计算语言的概念得以完善,已成为面向对象编程的重要试验床。但是,也许它最突出的贡献是作为一个范例,即一个领域如何快速解决难题,停止对这些难题解决方案的争论。模拟领域的学者能够做到这些,是因为他们对建模更感兴趣,而不是建模所用的框架。他们并不模拟冬季。他们并不想要证明自己的工作是如何促进了计算机科学的发展。他们只是在试图模拟真实的世界。
所有评论仅代表网友意见